package com.loong.loong.hik.api.entity.resource;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalDateTime;
import javax.validation.constraints.NotNull;
import lombok.Data;

/**
 * 【区域】RegionDTO属性说明
 * @author jinyiang
 * @date 2023/3/22 10:03
 */
@Data
@TableName("hik_resource_region")
public class HikResourceRegion {

	/**
	 * 区域编号
	 */
	@TableId(value = "index_code", type = IdType.ASSIGN_ID)
	@NotNull(message = "区域编号不能为空")
	private String indexCode;

	/**
	 * 区域名称
	 */
	@TableField("name")
	@NotNull(message = "区域名称不能为空")
	private String name;

	/**
	 * 区域完整
	 */
	@TableField("region_path")
	@NotNull(message = "区域完整不能为空")
	private String regionPath;

	/**
	 * 父区域编号
	 */
	@TableField("parent_index_code")
	@NotNull(message = "父区域编号不能为空")
	private String parentIndexCode;

	/**
	 * 用于标识区域节点是否有权限操作
	 * 用于构建区域目录层级使用 true：有权限 false：无权限
	 */
	@TableField("available")
	@NotNull(message = "区域是否有权限操作不能为空")
	private Boolean available;

	/**
	 * 标识区域节点是否叶子节点
	 * true:是叶子节点，表示该区域下面未挂区域
	 * false:不是叶子节点，表示该区域下面挂有区域
	 */
	@TableField("leaf")
	@NotNull(message = "区域是否叶子节点不能为空")
	private Boolean leaf;

	/**
	 * 级联平台标识
	 * 多个级联编号以@分隔，本级区域默认值“0”
	 */
	@TableField("cascade_code")
	@NotNull(message = "级联平台标识不能为空")
	private String cascadeCode;
	/**
	 * 区域标识
	 * 0：本级
	 * 1：级联
	 * 2：混合，下级推送给上级的本级点（杭州本级有滨江，然后下级滨江又把自己推送上来了，滨江是混合区域节点）
	 * 入参cascadeFlag与返回值对应：
	 * cascadeFlag=0：返回0、1、2
	 * cascadeFlag=1：返回0、2
	 * cascadeFlag=2：返回1、2
	 */
	@TableField("cascade_type")
	@NotNull(message = "区域标识不能为空")
	private Integer cascadeType;

	/**
	 * 区域类型
	 * 0：国际区域
	 * 1：雪亮工程区域
	 * 2：司法行政区域
	 * 9：自定义区域
	 * 10：历史兼容版本占用普通区域
	 * 11：历史兼容版本占用级联区域
	 * 12：楼栋单元
	 */
	@TableField("catalog_type")
	@NotNull(message = "区域类型不能为空")
	private Integer catalogType;

	/**
	 * 外码(如：国际码)
	 */
	@TableField("external_index_code")
	private String externalIndexCode;

	/**
	 * 父外码(如：国际码)
	 */
	@TableField("parent_external_index_code")
	private String parentExternalIndexCode;

	/**
	 * 同级区域顺序
	 */
	@TableField("sort")
	private Integer sort;

	/**
	 * 本区域资源数量(根据资源类型统计)
	 * 只统计本级挂的资源数量，不包含下级及下下级等；
	 */
	@TableField("local_quantity")
	private Integer localQuantity;

	/**
	 * 本区域及下级区域资源数量(根据资源类型统计)
	 * 包含本级及下级挂的资源数量；
	 */
	@TableField("total_quantity")
	private Integer totalQuantity;

	/**
	 * 创建时间
	 */
	@TableField("create_time")
	@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX")
	private LocalDateTime createTime;

	/**
	 * 更新时间
	 */
	@TableField("update_time")
	@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX")
	private LocalDateTime updateTime;
}
